package org.Yiran.timetale_re.item.tool.screwdriver.modules;

import net.minecraft.network.chat.Component;
import net.minecraft.world.item.ItemStack;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import org.Yiran.timetale_re.item.tool.screwdriver.core.ScrewdriverModuleItem;
import org.Yiran.timetale_re.item.tool.screwdriver.modules.enmu.ModuleCategory;
import org.Yiran.timetale_re.item.tool.screwdriver.modules.enmu.ModuleType;

import java.util.List;

/**
 * 模块接口
 * <p>
 * 定义模块的基本功能接口
 * </p>
 */
public interface IModule {
    
    /**
     * 获取模块的唯一标识符
     *
     * @return 模块ID
     */
    String getModuleId();
    
    /**
     * 获取模块的显示名称
     *
     * @return 模块名称
     */
    Component getDisplayName();
    
    /**
     * 获取模块类型
     *
     * @return 模块类型
     */
    default ModuleType getModuleType() {
        return null;
    }
    
    /**
     * 获取模块分类
     *
     * @return 模块分类
     */
    default ModuleCategory getModuleCategory() {
        return ModuleCategory.ATTRIBUTE;
    }
    
    /**
     * 添加模块提示信息
     *
     * @param stack   模块物品栈
     * @param tooltip 提示信息列表
     */
    @OnlyIn(Dist.CLIENT)
    default void appendHoverText(ItemStack stack, List<Component> tooltip) {
        // 默认实现为空
    }

    /**
     * 获取模块等级
     *
     * @return 模块等级
     */
    default ScrewdriverModuleItem.ModuleLevel getModuleLevel() {
        return ScrewdriverModuleItem.ModuleLevel.BASIC;
    }
}